'use strict'

// 导入所需模块
let fs = require('fs');
let path = require('path');
let router = require('koa-router')();

// 获取newarr文件夹下以 .js 格式结尾，并且不是 index.js 文件
function blue(){
    // 获取newarr文件夹的绝对路径,并且搜索文件夹下所有js文件
    let files = fs.readdirSync(__dirname);
    // 利用过滤器遍历 files 筛选出以 .js 格式结尾，并且不是 index.js 文件
    let black = files.filter(name=>{
        return name.endsWith('.js') && name !== 'index.js';
    });
     // 将过滤完的结果返回
    return black;
}

// 注册路由
function green(files){
     // 遍历 file 将每一个 js 文件都存在 element 中
    files.forEach(element => {
        // 将 newarr文件夹的路径与每个 js 文件进行拼接
        let fullgreen = path.join(__dirname,element);
        // 导入 fullgreen路径，获取里面的路由对象
        let filegreen = require(fullgreen);
        // 循环遍历filegreen对象,注册里面的路由
        for(let ch in filegreen){
            // 获取路由请求类型
            let type = filegreen[ch][0];   
            // 获取路由请求所对应的处理函数
            let fn = filegreen[ch][1];   

            if(type==='get'){
                // get 请求,参数第一项item为请求地址，第二项是请求地址对应的处理函数
                router.get(ch,fn);
            }else{
                //post请求
                router.post(ch,fn);
            }
        }
    });
}

// 此文件当作中间件暴露出去，中间件必须是函数
module.exports = function(){
    // 调用函数blue(),获取过滤完的js文件
    let res = blue();
    // 调用函数green(),并传入过滤完的js文件注册路由
    green(res);
    // 将路由返回出去
    return router.routes();
}